// Copyright (C) 2022 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
//
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<广西木子科技有限公司>，授权编号：<NT220402151538>，代码指纹：<A.648883738.885>，技术对接人微信：<ID: Lingmuziyi>】
// 【授权寄送：<收件：李先生、地址：南宁市科园西十路11号国电智能大厦1101F、电话：17736659550、邮箱：yingshashou@vip.qq.com>】
//
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
//
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rainbowchat.http.logic.dto;

/**
 * 群组信息封装类。
 * <p>
 * 本类中的大部分字段意义与数据字典中“群基本信息/group_base”表保持一致。
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @since 4.3
 */
public class GroupEntity implements java.io.Serializable {
    /**
     * BBS聊天（即世界频道）所对应的群组聊天id（因为世界频道是个特殊
     * 的群聊，属系统默认无需创建，所以给它一个默认的固定id，以便跟普
     * 通群聊区分开来）.
     */
    public final static String DEFAULT_GROUP_ID_FOR_BBS = "-1";

    /**
     * 群id
     */
    private String g_id;
    /**
     * 群状态
     */
    private String g_status;
    /**
     * 群名字
     */
    private String g_name;
    /**
     * 群主uid
     */
    private String g_owner_user_uid;
    /**
     * 群公告
     */
    private String g_notice;
    /**
     * 最大群员数
     */
    private String max_member_count;
    /**
     * 当前群员数
     */
    private String g_member_count;
    /**
     * 群创建者昵称 @since 4.5
     */
    private String create_user_name;
    /**
     * 群创建时间
     */
    private String create_time;

    /**
     * 群主昵称
     */
    private String g_owner_name;      // 注：本字段非“群基本信息/group_base”表中的字段
    /**
     * "我"在本群中的昵称（本字段只在针对”我“的群组信息查询时才有意义）
     */
    private String nickname_ingroup;  // 注：本字段非“群基本信息/group_base”表中的字段
    /**
     * ”我“是否在此群里（存在则返回1，不存在则返回0，返回-1表示不需要查询此值）
     */
    private String imIsInGroup;       // 注：本字段非“群基本信息/group_base”表中的字段

    /**
     * 群公告更新时间
     */
    private String g_notice_updatetime;
    /**
     * 群公告更新者
     */
    private String g_notice_updateuid;
    /**
     * 群公告更新者昵称
     */
    private String g_notice_updatenick;// 注：本字段非“群基本信息/group_base”表中的字段

//	/** 群组收到新消息是否提示（默认true）。本字段仅用于客户UI时，与服务端无关！ */
//	protected transient boolean groupMsgToneOpen = true;

    /**
     * 使用新的对象内容来更新旧对象，从而保证旧对象内容的更新但保持旧对象的存在。
     *
     * @param newGe 新的对象
     */
    public void update(GroupEntity newGe) {
        if (newGe != null) {
            this.g_id = newGe.getG_id();
            this.g_status = newGe.getG_status();
            this.g_name = newGe.getG_name();
            this.g_owner_user_uid = newGe.getG_owner_user_uid();
            this.g_notice = newGe.getG_notice();
            this.max_member_count = newGe.getMax_member_count();
            this.g_member_count = newGe.getG_member_count();
            this.g_owner_name = newGe.getG_owner_name();
            this.nickname_ingroup = newGe.getNickname_ingroup();

            this.g_notice_updatetime = newGe.getG_notice_updatetime();
            this.g_notice_updateuid = newGe.getG_notice_updateuid();
            this.g_notice_updatenick = newGe.getG_notice_updatenick();
        }
    }

    public String getG_id() {
        return g_id;
    }

    public void setG_id(String g_id) {
        this.g_id = g_id;
    }

    public String getG_status() {
        return g_status;
    }

    public void setG_status(String g_status) {
        this.g_status = g_status;
    }

    public String getG_name() {
        return g_name;
    }

    public void setG_name(String g_name) {
        this.g_name = g_name;
    }

    public String getG_owner_user_uid() {
        return g_owner_user_uid;
    }

    public void setG_owner_user_uid(String g_owner_user_uid) {
        this.g_owner_user_uid = g_owner_user_uid;
    }

    public String getG_notice() {
        return g_notice;
    }

    public void setG_notice(String g_notice) {
        this.g_notice = g_notice;
    }

    public String getMax_member_count() {
        return max_member_count;
    }

    public void setMax_member_count(String max_member_count) {
        this.max_member_count = max_member_count;
    }

    public String getG_member_count() {
        return g_member_count;
    }

    public void setG_member_count(String g_member_count) {
        this.g_member_count = g_member_count;
    }

    public String getG_owner_name() {
        return g_owner_name;
    }

    public void setG_owner_name(String g_owner_name) {
        this.g_owner_name = g_owner_name;
    }

    public String getNickname_ingroup() {
        return nickname_ingroup;
    }

    public void setNickname_ingroup(String nickname_ingroup) {
        this.nickname_ingroup = nickname_ingroup;
    }

    public String getG_notice_updatetime() {
        return g_notice_updatetime;
    }

    public void setG_notice_updatetime(String g_notice_updatetime) {
        this.g_notice_updatetime = g_notice_updatetime;
    }

    public String getG_notice_updateuid() {
        return g_notice_updateuid;
    }

    public void setG_notice_updateuid(String g_notice_updateuid) {
        this.g_notice_updateuid = g_notice_updateuid;
    }

    public String getG_notice_updatenick() {
        return g_notice_updatenick;
    }

    public void setG_notice_updatenick(String g_notice_updatenick) {
        this.g_notice_updatenick = g_notice_updatenick;
    }

    public String getCreate_user_name() {
        return create_user_name;
    }

    public void setCreate_user_name(String create_user_name) {
        this.create_user_name = create_user_name;
    }

    public String getCreate_time() {
        return create_time;
    }

    public void setCreate_time(String create_time) {
        this.create_time = create_time;
    }

    public String getImIsInGroup() {
        return imIsInGroup;
    }

    public void setImIsInGroup(String imIsInGroup) {
        this.imIsInGroup = imIsInGroup;
    }

    /**
     * ”我“是否在此群里.
     *
     * @return true表示是，否则不是
     */
    public boolean myselfIsInGroup() {
        return "1".equals(this.imIsInGroup);
    }

//	public boolean isGroupMsgToneOpen()
//	{
//		return groupMsgToneOpen;
//	}
//
//	public void setGroupMsgToneOpen(boolean groupMsgToneOpen)
//	{
//		this.groupMsgToneOpen = groupMsgToneOpen;
//	}

    /**
     * 是否是“世界频道”（或者说是bbs聊天）。
     *
     * @return true表示是世界频道，否则不是
     */
    public boolean isWorldChat() {
        return GroupEntity.isWorldChat(this.g_id);
    }

    /**
     * 指定id是否是“世界频道”（或者说是bbs聊天）。
     *
     * @param gid 群id
     * @return true表示是世界频道，否则不是
     */
    public static boolean isWorldChat(String gid) {
        return GroupEntity.DEFAULT_GROUP_ID_FOR_BBS.equals(gid);
    }

}
